Django অ্যাপ্লিকেশন ডিপ্লয়মেন্ট হল আপনার Django প্রজেক্টটিকে প্রোডাকশন এনভায়রনমেন্টে বা লাইভ সার্ভারে হোস্ট করার প্রক্রিয়া। এটি অত্যন্ত গুরুত্বপূর্ণ, কারণ আপনার অ্যাপ্লিকেশনটি লাইভ ব্যবহারকারীদের জন্য অ্যাক্সেসযোগ্য হবে। Django অ্যাপ্লিকেশন ডিপ্লয়মেন্ট করার জন্য কয়েকটি গুরুত্বপূর্ণ স্টেপ আছে, যেমন সার্ভার সেটআপ, নিরাপত্তা কনফিগারেশন, এবং ওয়েব সার্ভার ব্যবস্থাপনা।
এই টিউটোরিয়ালে, আমরা Django অ্যাপ্লিকেশনকে Heroku এবং DigitalOcean (বা আপনার পছন্দমত যেকোনো VPS) সার্ভারে ডিপ্লয় করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করব।
১. প্রজেক্টের প্রস্তুতি
ডিপ্লয়মেন্টের আগে কিছু সাধারণ প্রস্তুতি নিতে হয়:
১.১. DEBUG মোড বন্ধ করা
প্রোডাকশন এনভায়রনমেন্টে Django প্রজেক্টে DEBUG মোড বন্ধ রাখতে হবে। এটি settings.py ফাইলে করা যায়:
# settings.py
DEBUG = False
এছাড়া, ALLOWED_HOSTS কনফিগার করতে হবে, যাতে Django জানে কোন ডোমেইন থেকে অ্যাপ্লিকেশনটি অ্যাক্সেস করা হবে:
# settings.py
ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']
১.২. Secret Key সুরক্ষিত করা
Django এর SECRET_KEY প্রোডাকশন এনভায়রনমেন্টে সুরক্ষিতভাবে রাখতে হবে। এটি কখনো কোডে হার্ডকোড করা উচিত নয়। আপনি এটি environment variable হিসেবে সেট করতে পারেন।
# settings.py
import os
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
এটি ব্যবহার করতে, আপনার সার্ভারে DJANGO_SECRET_KEY ভেরিয়েবল তৈরি করতে হবে।
১.৩. স্ট্যাটিক ফাইল (Static files) কনফিগারেশন
স্ট্যাটিক ফাইলগুলিকে প্রোডাকশন সার্ভারে হ্যান্ডেল করার জন্য Whitenoise ব্যবহার করা যেতে পারে।
প্রথমে Whitenoise ইনস্টল করুন:
pip install whitenoise
এবার settings.py তে Whitenoise যুক্ত করুন:
# settings.py
MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware',
# অন্যান্য middleware
]
এরপর STATICFILES_STORAGE সেট করুন:
# settings.py
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
২. Heroku তে Django অ্যাপ্লিকেশন ডিপ্লয়মেন্ট
Heroku একটি ক্লাউড প্ল্যাটফর্ম, যেখানে Django অ্যাপ্লিকেশন খুব সহজেই ডিপ্লয় করা যায়। এর জন্য Heroku CLI ইনস্টল করতে হবে।
২.১. Heroku অ্যাকাউন্ট এবং CLI ইনস্টলেশন
প্রথমে, Heroku এ অ্যাকাউন্ট তৈরি করুন এবং Heroku CLI ইনস্টল করুন।
২.২. Heroku অ্যাপ তৈরি করা
Heroku তে Django অ্যাপ ডিপ্লয় করার জন্য আপনাকে একটি অ্যাপ তৈরি করতে হবে। প্রথমে আপনার Django প্রজেক্ট ডিরেক্টরিতে গিয়ে লগইন করুন:
heroku login
তারপর, একটি নতুন Heroku অ্যাপ তৈরি করুন:
heroku create your-app-name
২.৩. Heroku তে ডিপ্লয়মেন্টের জন্য প্রস্তুতি
Heroku তে Django অ্যাপ ডিপ্লয় করতে হলে কিছু ফাইল এবং কনফিগারেশন প্রয়োজন হবে:
Procfile: এই ফাইলটি Heroku কে জানায় যে অ্যাপটি কিভাবে চালাতে হবে।
web: gunicorn your_project_name.wsgi
requirements.txt: আপনার প্রজেক্টের সব প্যাকেজ এবং লাইব্রেরি উল্লেখ করতে হবে।
pip freeze > requirements.txt
runtime.txt: Heroku কে জানায় যে আপনি কোন পাইটন ভার্সন ব্যবহার করতে চান।
python-3.x.x
gunicorn: এটি Heroku তে প্রোডাকশন সার্ভারে Django অ্যাপ চালানোর জন্য ব্যবহৃত হয়। এটি ইনস্টল করতে:
pip install gunicorn
- ডাটাবেস মাইগ্রেশন: Heroku তে ডিপ্লয় করার পর আপনাকে ডাটাবেস মাইগ্রেট করতে হবে:
heroku run python manage.py migrate
২.৪. Heroku তে অ্যাপ ডিপ্লয় করা
এখন, আপনি আপনার পরিবর্তিত ফাইলগুলো Git এ কমিট করুন এবং Heroku তে পুশ করুন:
git add .
git commit -m "Ready for deployment"
git push heroku master
আপনার অ্যাপ Heroku তে ডিপ্লয় হয়ে যাবে এবং আপনি এটি ব্রাউজারে দেখতে পাবেন।
৩. DigitalOcean (বা VPS) তে Django অ্যাপ্লিকেশন ডিপ্লয়মেন্ট
DigitalOcean হল একটি জনপ্রিয় ক্লাউড হোস্টিং সেবা যেখানে আপনি Django অ্যাপ্লিকেশন হোস্ট করতে পারেন।
৩.১. VPS সেটআপ
DigitalOcean তে একটি VPS (Virtual Private Server) তৈরি করুন এবং আপনার সার্ভার লগইন করুন। তারপর, Python, pip, Gunicorn, PostgreSQL, এবং Nginx ইন্সটল করুন।
sudo apt update
sudo apt install python3-pip python3-dev libpq-dev
sudo apt install gunicorn
sudo apt install nginx
৩.২. প্রজেক্টের কোড সার্ভারে পুশ করা
আপনার প্রজেক্ট GitHub বা অন্য কোন ভার্সন কন্ট্রোল থেকে সার্ভারে পুশ করুন।
৩.৩. Gunicorn এবং Nginx সেটআপ
Gunicorn দিয়ে Django অ্যাপ চালানোর জন্য Gunicorn সার্ভিস তৈরি করুন। এরপর Nginx দিয়ে রিভার্স প্রক্সি কনফিগার করুন।
Gunicorn সার্ভিস ফাইল তৈরি করুন:
sudo nano /etc/systemd/system/gunicorn.service
এতে নিচের কনফিগারেশন যুক্ত করুন:
[Unit]
Description=gunicorn daemon for Django project
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind unix:/path/to/your/project.sock your_project_name.wsgi:application
[Install]
WantedBy=multi-user.target
এবার Gunicorn সার্ভিসটি চালু করুন:
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
Nginx কনফিগারেশন:
sudo nano /etc/nginx/sites-available/your_project
এখানে, আপনার Nginx কনফিগারেশন যুক্ত করুন, যাতে রিভার্স প্রক্সি হিসেবে কাজ করে।
সার্ভার সিকিউরিটি এবং অন্যান্য কনফিগারেশন
- SSL: প্রোডাকশন সার্ভারে HTTPS সাপোর্টের জন্য SSL কনফিগার করুন। Let's Encrypt ব্যবহার করে SSL ফ্রি সেটআপ করতে পারেন।
- ডাটাবেস: প্রোডাকশন ডাটাবেস (যেমন PostgreSQL) ব্যবহার করুন এবং DATABASES কনফিগারেশন আপডেট করুন।
এভাবে, Django অ্যাপ্লিকেশনটি আপনি Heroku বা VPS (যেমন DigitalOcean) তে সফলভাবে ডিপ্লয় করতে পারবেন।
Read more